package com.zth.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.UUID;

@Controller
public class UploadController {
//        @PostMapping("uploadFile")
////file 必须跟upload.jsp里的 input type=file 里面的name一致
//    public String uploadFile(MultipartFile file, HttpServletRequest request) throws RuntimeException {
//        //file代表上传的文件
//        String oldname = file.getOriginalFilename();
//        //获取文件上传的名字
//        System.out.println("file = " + file.getOriginalFilename());
//        //拿到上传的名字
//        String originalFilename = file.getOriginalFilename();
//
//        //存放到upload文件夹下
//        String realPath = request.getServletContext().getRealPath("/upload");
//
//        System.out.println("realPath = " + realPath);
//        //判断文件是否存在
//        File file1 = new File(realPath);
////        文件名字
//
//        if (!file1.exists()) {
//            //如果不存在，再重新创建一下
//            file1.mkdirs();
//        }
//        //如果上传的名字一样，则会被覆盖，   避免问题发生  → 解决问题 →
//        //新名字
//        String s = UUID.randomUUID().toString();//zxcvbnmghj
//        // +.JPG PNG JEPG
//        //获取原来文件后缀  oldname    如：  123.jpg
//        int i = oldname.lastIndexOf(".");//最后一个  .
//        //从 . 后截取
//        String suffixname = oldname.substring(i);
//        System.out.println("substring = " + suffixname);
//        //新名字
//        String newname = s + suffixname;
//        System.out.println("newname=" + newname);
//
//
//        //将图片上传到file里面
//        try {
//            //输出流  主要用于写入
//            FileOutputStream outputStream = new FileOutputStream(file1 + File.separator + newname);
//            //输入流
//            InputStream inputStream = file.getInputStream();
//
//            int len = 0;
//            while ((len = inputStream.read()) != -1) {
//                outputStream.write(len);
//            }
//            outputStream.flush();
//            outputStream.close();
//            inputStream.close();
//            //路径保存到数据库即可
//            String picpath = realPath + File.separator + newname;
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        }
//
//
//        return "index";
//    }



    @PostMapping("uploadFile")
//file 必须跟upload.jsp里的 input type=file 里面的name一致
    public String uploadFile2(MultipartFile file, HttpServletRequest request) throws RuntimeException {
        //file代表上传的文件
        String oldname = file.getOriginalFilename();
        //获取文件上传的名字
//    System.out.println("file = " + file.getOriginalFilename());
        //拿到上传的名字
        String originalFilename = file.getOriginalFilename();

        //存放到upload文件夹下
        String realPath = request.getServletContext().getRealPath("/upload");

//    System.out.println("realPath = " + realPath);
        //判断文件是否存在
        File file1 = new File(realPath);
//        文件名字

        if (!file1.exists()) {
            //如果不存在，再重新创建一下
            file1.mkdirs();
        }
        //如果上传的名字一样，则会被覆盖，   避免问题发生  → 解决问题 →
        //新名字
        String s = UUID.randomUUID().toString();//zxcvbnmghj
        // +.JPG PNG JEPG
        //获取原来文件后缀  oldname    如：  123.jpg
        int i = oldname.lastIndexOf(".");//最后一个  .
        //从 . 后截取
        String suffixname = oldname.substring(i);
//    System.out.println("substring = " + suffixname);
        //新名字
        String newname = s + suffixname;
//    System.out.println("newname=" + newname);


        File file2 = new File(realPath + File.separator + newname);
        try {
            file.transferTo(file2);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        String picpath = realPath + File.separator + newname;
        System.out.println("picpath = " + picpath);

        return "index";
    }
}
